Planning and building a distributed computing system is a challenging task due to the scale and complexity involved with the problem. For example, planning a company-wide network infrastructure requires the designers to first understand the types of applications that will be connected over the network and the impact of having different types of applications on the same network. In a more specific example, designing an enterprise-scale storage infrastructure requires an understanding of how various applications will access the storage systems (e.g., data rate, security requirement, and desired availability level). Each application may have specific system requirements and those requirements may conflict with other applications running on the same network. In reality, applications are constantly being added and removed from the network. This requires a constant re-planning and re-building of the network infrastructure.
Conventional techniques utilize a hands-on approach to handle this process. Using the networked storage design process as a concrete example, the typical task of a storage system designer is a continuous cycle of the following: (a) planning new infrastructure or extensions to the existing infrastructure in order to satisfy increasing storage demand; and (b) monitoring the data being stored as it goes through a lifecycle of allocation, backups, migration, and disposal. This process has become increasingly tedious and time consuming because network applications have become more complex and resource driven.
Outside of the storage infrastructure context, there has been a general need for an automated network planning method. Unfortunately, existing network tools have provided inflexible and limited solutions. For example, existing tools fail to fully address application requirements in their planning methodology. Therefore, these tools still require first level human analysis. In addition, existing network tools are customized to only handle certain types of limited infrastructures. As a result, it is very difficult to use these network planning tools in conjunction with each other. For example, one cannot easily generate a plan which includes both a communications network infrastructure and a storage network infrastructure. It is also difficult to generate a plan of computer servers which will serve applications, and further plan the storage network infrastructure necessary to connect the servers to enterprise storage systems. The only two solutions are to plan each infrastructure independently or to find planners that plan for specific infrastructure combinations.
Therefore, there is a need for a flexible, automated method of network resource planning capable of addressing various infrastructures and application requirements.